def ff(Object o) {
	return 'object'
}

def ff(String s) {
	return 'string'
}

Object p1 = 1;
Object p2 = 'xxx'

assert ff(p1) == 'object'
// 如果是 java, 会是 return 'object' 因为 p2 是声明为 Object 的
// 而 groovy 中在运行时根据参数实际类型来决定该调用的方法是哪个
assert ff(p2) == 'string'
